﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DAO;
using TPDiseño.Clases_de_Entidad;
using TPDiseño.DTO_s;




namespace TPDiseño.Clases_de_Control
{
    public class Gestor_de_Puesto
    {
        private DAOPuesto miDAOPuesto = DAOPuesto.Instance; 

        public void nuevo(string cod_puesto, string nombre, string descripcion, Empresa empresa, List<DTOCompPon> DTOComPonCol)
        {
            //Crea un puesto llama al metodo crearCompPond este devuelvel una coleccion
            //de PuestoCompetencia y a cada puesto competencia se lo agrega a la lista de competenciasPonderadas
            Puesto puestoNuevo = new Puesto();
            puestoNuevo = puestoNuevo.nuevo(cod_puesto, nombre, descripcion, empresa);

            Gestor_Competencia GC = new Gestor_Competencia();
            List<PuestoCompetencia> PuestoCompCol = new List<PuestoCompetencia>();

            PuestoCompCol = GC.crearCompPond(DTOComPonCol);

          foreach (PuestoCompetencia PuestoComp in PuestoCompCol)
            {
                puestoNuevo.add(PuestoComp);
            }
            guardarPuesto(puestoNuevo);
            
        }
        public List<Empresa> buscarEmp()
        {
            DAO.DAOEmpresa DAOEmp = new DAO.DAOEmpresa();
            List<Empresa> EmpCol = DAOEmp.cargar();

            return EmpCol;
        }

        public void guardarPuesto(Puesto p)
        {

            DAO.DAOPuesto daoP = new DAO.DAOPuesto();
           
            daoP.guardar(p);

        }
        public List<Puesto> buscarP(string cod, string nomP, string emp,string desc)
        {
            DAOPuesto DAOP = new DAOPuesto();
            return DAOP.cargar(cod, nomP, emp,desc);
        }

        public List<DTOPyEv> buscar(string Cod, string nomP, string emp, string desc)
        {
            DAOPuesto DAOPuesto = new DAO.DAOPuesto();
            Gestor_Evaluacion ge = new Gestor_Evaluacion();
            List<DTOPyEv> DTOPyEv = new List<DTOPyEv>();

            //Trae los puestos relacionados a los parametros de entrada
            List<Clases_de_Entidad.Puesto> puestoCol = DAOPuesto.cargar(Cod, nomP, emp, desc);

            //Para c/ puesto cuenta sus evaluaciones y retorna un entero.
            foreach (Puesto puesto in puestoCol)
            {

                DTOPyEv.Add(ge.countEv(puesto));
            }

            return DTOPyEv;
        }

        public List<Puesto> buscar(string nombre) {

            // Retorno una lista de puestos de las mas ocurrentes al puesto
            return miDAOPuesto.cargar(nombre);

        }


    }
}
